home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 1 / Meeting Pearls Vol 1 (1994).iso / installed_progs / comm / ums / developer.lha / Developer / arexx / ShowGroups.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1993-11-03  |  3.0 KB  |  127 lines

  1. /* ------------------------------------------------------------------------
  2.   :Program.       ShowGroups
  3.   :Contents.      shows all groups in UMS' messagebase
  4.   :Author.        Kai Bolay [kai]
  5.   :Address.       Snail Mail:              EMail:
  6.   :Address.       Hoffmannstraße 168       UUCP: kai@amokle.stgt.sub.org
  7.   :Address.       D-71229 Leonberg         FIDO: 2:2407/106.3
  8.   :History.       v1.0 [kai] 23-Sep-93
  9.   :History.       v1.2 [kai] 29-Sep-93 added MakeFlags()
  10.   :Copyright.     Public Domain
  11.   :Language.      ARexx
  12.   :Translator.    RexxMast
  13.   :Bugs.          no argument parsing
  14. ------------------------------------------------------------------------ */
  15.  
  16. /*** Startup ***/
  17.  
  18. options results
  19.  
  20. RC = 0
  21.  
  22. signal on BREAK_C
  23. signal on BREAK_D
  24. signal on BREAK_E
  25. signal on BREAK_F
  26. signal on ERROR
  27. signal on HALT
  28. signal on IOERR
  29. signal on SYNTAX
  30.  
  31. /*** Constant definition (who knows how to include UMSConsts.rexx ???) ***/
  32.  
  33. true = 1
  34. UMSCODE_Group        =  9
  35. UMSUSTAT_ReadAccess  = 10
  36.  
  37. /*** Open ums.library ***/
  38.  
  39. libname = "ums.library"
  40.  
  41. if ~show("L", libname) then do
  42.   if ~addlib(libname, 0, -210, 8) then do
  43.     say libname "not found!"
  44.     exit
  45.   end
  46. end
  47.  
  48. /*** Login ***/
  49.  
  50. parse arg name password .
  51.  
  52. account = UMSLogin(name, password)
  53. if account = 0 then do
  54.   say "unable to login."
  55.   exit
  56. end
  57.  
  58. /*** Do the magic ***/
  59.  
  60. /* clear local flag 0 on all messages */
  61. res = UMSSelectFlags(account, "LOCAL", MakeFlags(), MakeFlags(0),,, "LOCAL", MakeFlags(), MakeFlags())
  62. say "you have" res "messages in your message base"
  63.  
  64. /* set local flag 0 on all readable messages */
  65. res = UMSSelectFlags(account, "LOCAL", MakeFlags(0), MakeFlags(),,, "USER", MakeFlags(UMSUSTAT_ReadAccess), MakeFlags())
  66. say "you can't read" res "messages"
  67.  
  68. last = 0
  69. do forever
  70.   /* find next message with flag 0 set */
  71.   last = UMSSearchFlags(account, "LOCAL", MakeFlags(0), MakeFlags(), last)
  72.   if last = 0 then leave
  73.   drop msg. /* _IMPORTANT_ */
  74.   if ~ReadUMSMsgField(account, last, msg., UMSCODE_Group) then do
  75.     call CheckErr
  76.   end
  77.   if symbol("msg." || UMSCode_Group) ~= "VAR" then do
  78.     /* clear local flag 0 on all private messages */
  79.     res = UMSSelectField(account, "LOCAL", MakeFlags(0), MakeFlags(),,, UMSCODE_Group, "", true)
  80.     say res "private messages"
  81.   end; else do
  82.     /* clear local flag 0 on all messages belonging to this group */
  83.     res = UMSSelectField(account, "LOCAL", MakeFlags(0), MakeFlags(),,, UMSCODE_Group, msg.UMSCODE_Group, true)
  84.     say res "messages in" msg.UMSCode_Group
  85.   end
  86. end
  87.  
  88. /*** Final cleanup ***/
  89.  
  90. BREAK_C:
  91. BREAK_D:
  92. BREAK_E:
  93. BREAK_F:
  94. ERROR:
  95. HALT:
  96. IOERR:
  97. SYNTAX:
  98.  
  99. IF RC ~= 0 THEN DO
  100.   SAY "Error: " rc errortext(rc) "Line" sigl
  101. END
  102.  
  103. /*** Logout ***/
  104.  
  105. if account ~= 0 then do
  106.   call UMSLogout(account)
  107.   account = 0
  108. end
  109.  
  110. exit
  111.  
  112. /*** Support ***/
  113.  
  114. CheckErr: procedure expose account
  115.   err = UMSErrNum(account)
  116.   if err ~= 0 then do
  117.     say "UMS Error #" || err || ": " || UMSErrTxt(account)
  118.   end
  119. return
  120.  
  121. MakeFlags: procedure 
  122.   flags = '00000000'x
  123.   do i = 1 to arg()
  124.     flags = BITSET(flags, arg(i))
  125.   end
  126. return flags
  127.